package com.caocaog.market.entity.dto;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;

/**
 * 店铺配置树
 *
 * @author chechen
 * @date 2022-11-03
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class ShopTypeTree implements Serializable {
    private static final long serialVersionUID = 1L;


    /**
     * 主键
     */
    private Long id;


    /**
     * 父级id
     */
    private Long parentId;


    /**
     * 店铺分类名称
     */
    private String name;


    /**
     * 分类级别，1一级 2二级 3三级 最多三级，三级无法创建子集
     */
    private Integer level;


    /**
     * 排序
     */
    private Long sort;


    /**
     * 状态 0冻结 1激活
     */
    private Boolean status;


    /**
     * 分站黑名单
     * 最多可存储20个地区分站id，被加入黑名单的分站无法看到此节点以及子节点
     */
    private List<String> blacklist;


    /**
     * 子集
     */
    private List<ShopTypeTree> children = new ArrayList<>();


    /**
     * 添加店铺配置枝节到子集中
     *
     * @param shopTypeTree 店铺配置枝节
     */
    public ShopTypeTree addChildren(Collection<ShopTypeTree> shopTypeTreeList) {
        Optional.ofNullable(this.children).orElse(new ArrayList<>()).addAll(shopTypeTreeList);
        return this;
    }

}
